home *** CD-ROM | disk | FTP | other *** search
-
- ; A fragment of code borrowed from 'music' a pd music demo from
- ; Commodore and resourced using resource.
- ;
-
- public _main
- public AmigaJunk
- public _stdout
-
- AmigaJunk
- lea initialSP(pc),a1
- move.l sp,(a1)
- lea dosCmdLen(pc),a1
- move.l d0,(a1)
- lea dosCmdBuf(pc),a1
- move.l a0,(a1)
- lea returnMsg(pc),a1
- move.l #0,(a1)
- move.l 4,a6
- sub.l a1,a1
- jsr -$0126(a6) ; allocate memory
- move.l d0,a4
- tst.l $00AC(a4)
- beq fromWorkbench
- fromCLI bsr openDOS
- clr.l -(sp)
- bsr _FindTask
- addq.l #4,sp
- move.l d0,a0
- move.l $00AC(a0),a0
- add.l a0,a0
- add.l a0,a0
- move.l $0010(a0),a0
- add.l a0,a0
- add.l a0,a0
- movem.l d2/a2/a3,-(sp)
- lea argvBuffer(pc),a2
- lea argvArray(pc),a3
- moveq.l #1,d2
- moveq.l #0,d0
- move.b (a0)+,d0
- move.l a2,(a3)+
- bra.s 1$
-
- 2$ move.b (a0)+,(a2)+
- 1$ dbra d0,2$
- clr.b (a2)+
- move.l dosCmdLen(pc),d0
- move.l dosCmdBuf(pc),a0
- 3$ move.b (a0)+,d1
- subq.l #1,d0
- ble.s parmExit
- cmp.b #$20,d1
- ble.s 3$
- addq.l #1,d2
- move.l a2,(a3)+
- bra.s 5$
-
- 4$ move.b (a0)+,d1
- subq.l #1,d0
- cmp.b #$20,d1
- ble.s 6$
- 5$ move.b d1,(a2)+
- bra.s 4$
-
- 6$ clr.b (a2)+
- bra.s 3$
-
- parmExit
- clr.b (a2)+
- clr.l (a3)+
- move.l d2,d0
- movem.l (sp)+,d2/a2/a3
- pea argvArray(pc)
- move.l d0,-(sp)
- bsr _Input
- lea _stdin(pc),a0
- move.l d0,(a0)
- bsr _Output
- lea _stdout(pc),a0
- move.l d0,(a0)+
- move.l d0,(a0)
- bsr _main
- moveq.l #0,d0
- move.l initialSP(pc),sp
- rts
-
- fromWorkbench
- bsr openDOS
- bsr waitmsg
- lea returnMsg(pc),a0
- move.l d0,(a0)
- move.l d0,-(sp)
- move.l d0,a2
- move.l $0024(a2),d0
- beq.s docons
- move.l _DOSBase(pc),a6
- move.l d0,a0
- move.l 0(a0),d1
- jsr -$007E(a6)
- docons move.l $0020(a2),d1
-
- ; beq.s domain
-
- lea mywindow(pc),a0
- move.l a0,d1
-
- move.l #$000003ED,d2
- jsr -$001E(a6)
- lea _stdin(pc),a0
- move.l d0,(a0)+
- move.l d0,(a0)+
- move.l d0,(a0)
- beq.s domain
- lsl.l #2,d0
- move.l d0,a0
- move.l 8(a0),$00A4(a4)
- domain clr.l -(sp)
- bsr _main
-
- move.l _stdin(pc),d1
- beq.s 1$
- move.l _DOSBase(pc),a6
- jsr -$24(a6)
- 1$
-
-
- moveq.l #0,d0
- bra.s exit2
-
- _exit move.l 4(sp),d0
- exit2 move.l initialSP(pc),sp
- move.l d0,-(sp)
- move.l returnMsg(pc),d1
- beq.s exitToDOS
- move.l 4,a6
- jsr -$0084(a6)
- move.l returnMsg(pc),a1
- jsr -$017A(a6)
- exitToDOS
- move.l (sp)+,d0
- rts
-
- noDOS movem.l d7/a5/a6,-(sp)
- move.l #$00038007,d7
- move.l 4,a6
- jsr -$006C(a6)
- movem.l (sp)+,d7/a5/a6
- moveq.l #$64,d0
- bra.s exit2
-
- waitmsg lea $005C(a4),a0
- jsr -$0180(a6)
- lea $005C(a4),a0
- jsr -$0174(a6)
- rts
-
- openDOS lea DOSName(pc),a1
- jsr -$0198(a6)
- lea _DOSBase(pc),a1
- move.l d0,(a1)
- beq.s noDOS
- rts
-
- _FindTask
- move.l a6,-(sp)
- move.l 8(sp),a1
- move.l 4,a6
- jsr -$0126(a6)
- move.l (sp)+,a6
- rts
-
- _Input move.l a6,-(sp)
- move.l _DOSBase,a6
- jsr -$0036(a6)
- move.l (sp)+,a6
- rts
-
- _Output move.l a6,-(sp)
- move.l _DOSBase,a6
- jsr -$003C(a6)
- move.l (sp)+,a6
- rts
-
- mywindow dc.b 'RAW:0/0/400/80/tetris window',0
- even
- _DOSBase dc.l 0
- _errno dc.l 0
- _stdin dc.l 0
- _stdout dc.l 0
- _stderr dc.l 0
- initialSP dc.l 0
- returnMsg dc.l 0
- dosCmdLen dc.l 0
- dosCmdBuf dc.l 0
- argvArray dcb.l 32,0
- argvBuffer dcb.l 64,0
- DOSName dc.b 'dos.library',0
-